package org.lzh.controller;

import org.lzh.pojo.User;
import org.lzh.service.RegisterService;
import org.lzh.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.ClassUtils;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.IOException;

//用户管理控制类 所有用户都能用到的方法
@Controller
@RequestMapping("user")
public class UserController {
    @Autowired
    private UserService userService;


    //更新老师个人信息
    @RequestMapping(value = "/updateUser",method = RequestMethod.POST)
    public String updateById(HttpServletRequest request,
                             @ModelAttribute User user,                          //@ModelAttribute这个注解可以将注册时输入的值封装成user对象，很方便
                             Model model,    //model可以用model.addAttribute 添加属性，然后在跳转的jsp页面里用，也很好用
                             HttpSession session
    ) throws IOException {
        System.out.println(user.getId()+user.getUsername()+user.getPassword()+user.getNote()+user.getImageLu());

        if(user.getPassword().isEmpty()||user.getUsername().isEmpty()){                   //如果密码为空就返回
            model.addAttribute("tip","姓名和密码不能为空");
//            User user1=userService.findById(user.getId());
//            model.addAttribute("user",user1);
            return "teacher/home";
        }

        if(!user.getImage().isEmpty()){         //如果上传的图片不为空，就上传

            //中间这一串是处理注册时上传的图片image保存到 “当前绝对路径+/upload”
            // 上传文件路径
//            String path = request.getServletContext().getRealPath("/upload/");

//            String path= File.separator +ClassUtils.getDefaultClassLoader().getResource("static/upload").getPath();
            String path= "/D:/项目上传的图片/img/";        //windows就存在d盘，linux就存在跟目录/的d盘
            System.out.println("------------------------------------------------path = "+path);
            // 上传文件名
            String filename = user.getImage().getOriginalFilename();
            System.out.println("----------------------------------------"+filename);

            //新建filename之前的目录path
            File filepath = new File(path,filename);
            // 判断路径是否存在，如果不存在就创建一个
            if (!filepath.getParentFile().exists()) {
                filepath.getParentFile().mkdirs();
            }

            // 先新建filename这个文件，再将上传的文件存到那
            File file = new File(path+File.separator+filename);
            user.getImage().transferTo(file);
            System.out.println("----------------------------------------上传成功"+path+File.separator+ filename);
            System.out.println("----------------------------------------上传成功"+file);

            //将图片的地址（上传的文件名）赋值给ImageLu
            user.setImageLu(filename);





        }else{  //如果没有上传图片就用以前的
            User user2=userService.findById(user.getId());
            user.setImageLu(user2.getImageLu());
        }
        System.out.println(user.getId()+user.getUsername()+user.getPassword()+user.getNote()+user.getImageLu());

        model.addAttribute("tip", "修改成功");
        userService.updateById(user);
        User user1=userService.findById(user.getId());
        session.setAttribute("user_session",user1);

        return "teacher/home";
    }


    //更新学生个人信息
    @RequestMapping(value = "/updateStudent",method = RequestMethod.POST)
    public String updateStudentById(HttpServletRequest request,
                             @ModelAttribute User user,                          //@ModelAttribute这个注解可以将注册时输入的值封装成user对象，很方便
                             Model model,    //model可以用model.addAttribute 添加属性，然后在跳转的jsp页面里用，也很好用
                             HttpSession session
    ) throws IOException {
        System.out.println(user.getId()+user.getUsername()+user.getPassword()+user.getNote()+user.getImageLu());

        if(user.getPassword().isEmpty()||user.getUsername().isEmpty()){                   //如果密码为空就返回
            model.addAttribute("tip","姓名和密码不能为空");
//            User user1=userService.findById(user.getId());
//            model.addAttribute("user",user1);
            return "student";
        }

        if(!user.getImage().isEmpty()){         //如果上传的图片不为空，就上传

            //中间这一串是处理注册时上传的图片image保存到 “当前绝对路径+/upload”
            // 上传文件路径
//            String path = request.getServletContext().getRealPath("/upload/");
//            String path=File.separator +ClassUtils.getDefaultClassLoader().getResource("static/upload").getPath();
//            System.out.println("------------------------------------------------"+path);
            String path= "/D:/项目上传的图片/img/";        //windows就存在d盘，linux就存在跟目录/的d盘
            System.out.println("------------------------------------------------path = "+path);
//            System.out.println(ResourceUtils.getURL("classpath:static").getPath() );
//            System.out.println("path = " + path);
            // 上传文件名
            String filename = user.getImage().getOriginalFilename();
            File filepath = new File(path,filename);
            // 判断路径是否存在，如果不存在就创建一个
            if (!filepath.getParentFile().exists()) {
                filepath.getParentFile().mkdirs();
            }
            // 将上传文件保存到一个目标文件当中
            user.getImage().transferTo(new File(path+File.separator+ filename));

            //将图片的地址（上传的文件名）赋值给ImageLu
            user.setImageLu(filename);

        }else{  //如果没有上传图片就用以前的
            User user2=userService.findById(user.getId());
            user.setImageLu(user2.getImageLu());
        }
        System.out.println(user.getId()+user.getUsername()+user.getPassword()+user.getNote()+user.getImageLu());

        model.addAttribute("tip", "修改成功");
        userService.updateById(user);
        User user1=userService.findById(user.getId());
        session.setAttribute("user_session",user1);
        return "student";
    }


    //注销当前用户  退出登录
    @RequestMapping(value="/logout")
    public String logout(HttpSession session){
        try {
            /** 注销当前会话 */
            session.invalidate();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "login";

    }

}
